<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>A Brief History of PostgreSQL</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REV="MADE"
HREF="mailto:pgsql-docs@postgresql.org"><LINK
REL="HOME"
TITLE="PostgreSQL 9.1.2 Documentation"
HREF="index.html"><LINK
REL="UP"
TITLE="Preface"
HREF="preface.html"><LINK
REL="PREVIOUS"
TITLE=" What is PostgreSQL?"
HREF="intro-whatis.html"><LINK
REL="NEXT"
TITLE="Conventions"
HREF="notation.html"><LINK
REL="STYLESHEET"
TYPE="text/css"
HREF="stylesheet.css"><META
HTTP-EQUIV="Content-Type"
CONTENT="text/html; charset=ISO-8859-1"><META
NAME="creation"
CONTENT="2011-12-01T22:07:59"></HEAD
><BODY
CLASS="SECT1"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="5"
ALIGN="center"
VALIGN="bottom"
><A
HREF="index.html"
>PostgreSQL 9.1.2 Documentation</A
></TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="top"
><A
TITLE=" What is PostgreSQL?"
HREF="intro-whatis.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="top"
><A
HREF="preface.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="60%"
ALIGN="center"
VALIGN="bottom"
>Preface</TD
><TD
WIDTH="20%"
ALIGN="right"
VALIGN="top"
><A
TITLE="Conventions"
HREF="notation.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="HISTORY"
>A Brief History of <SPAN
CLASS="PRODUCTNAME"
>PostgreSQL</SPAN
></A
></H1
><P
>  The object-relational database management system now known as
  <SPAN
CLASS="PRODUCTNAME"
>PostgreSQL</SPAN
> is derived from the
  <SPAN
CLASS="PRODUCTNAME"
>POSTGRES</SPAN
> package written at the
  University of California at Berkeley.  With over two decades of
  development behind it, <SPAN
CLASS="PRODUCTNAME"
>PostgreSQL</SPAN
> is now
  the most advanced open-source database available anywhere.
 </P
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="HISTORY-BERKELEY"
>The Berkeley <SPAN
CLASS="PRODUCTNAME"
>POSTGRES</SPAN
> Project</A
></H2
><P
>   The <SPAN
CLASS="PRODUCTNAME"
>POSTGRES</SPAN
> project, led by Professor
   Michael Stonebraker, was sponsored by the Defense Advanced Research
   Projects Agency (<ACRONYM
CLASS="ACRONYM"
>DARPA</ACRONYM
>), the Army Research
   Office (<ACRONYM
CLASS="ACRONYM"
>ARO</ACRONYM
>), the National Science Foundation
   (<ACRONYM
CLASS="ACRONYM"
>NSF</ACRONYM
>), and ESL, Inc.  The implementation of
   <SPAN
CLASS="PRODUCTNAME"
>POSTGRES</SPAN
> began in 1986.  The initial
   concepts for the system were presented in <A
HREF="biblio.html#STON86"
><I
><A
HREF="http://db.cs.berkeley.edu/papers/ERL-M85-95.pdf"
TARGET="_top"
>    The design of <SPAN
CLASS="PRODUCTNAME"
>POSTGRES</SPAN
>
    </A
></I
></A
>,
   and the definition of the initial data model appeared in <A
HREF="biblio.html#ROWE87"
><I
><A
HREF="http://db.cs.berkeley.edu/papers/ERL-M87-13.pdf"
TARGET="_top"
>    The <SPAN
CLASS="PRODUCTNAME"
>POSTGRES</SPAN
> data model
    </A
></I
></A
>.  The design of the rule system at that time was
   described in <A
HREF="biblio.html#STON87A"
><I
>The design of the <SPAN
CLASS="PRODUCTNAME"
>POSTGRES</SPAN
> rules system</I
></A
>.  The rationale and
   architecture of the storage manager were detailed in <A
HREF="biblio.html#STON87B"
><I
><A
HREF="http://db.cs.berkeley.edu/papers/ERL-M87-06.pdf"
TARGET="_top"
>    The design of the <SPAN
CLASS="PRODUCTNAME"
>POSTGRES</SPAN
> storage system
    </A
></I
></A
>.
  </P
><P
>   <SPAN
CLASS="PRODUCTNAME"
>POSTGRES</SPAN
> has undergone several major
   releases since then.  The first <SPAN
CLASS="QUOTE"
>"demoware"</SPAN
> system
   became operational in 1987 and was shown at the 1988
   <ACRONYM
CLASS="ACRONYM"
>ACM-SIGMOD</ACRONYM
> Conference.  Version 1, described in
   <A
HREF="biblio.html#STON90A"
><I
><A
HREF="http://db.cs.berkeley.edu/papers/ERL-M90-34.pdf"
TARGET="_top"
>    The implementation of <SPAN
CLASS="PRODUCTNAME"
>POSTGRES</SPAN
>
    </A
></I
></A
>, was released to a few external users in
   June 1989.  In response to a critique of the first rule system
   (<A
HREF="biblio.html#STON89"
><I
><A
HREF="http://db.cs.berkeley.edu/papers/ERL-M89-82.pdf"
TARGET="_top"
>    A commentary on the <SPAN
CLASS="PRODUCTNAME"
>POSTGRES</SPAN
> rules system
    </A
></I
></A
>), the rule system was redesigned (<A
HREF="biblio.html#STON90B"
><I
><A
HREF="http://db.cs.berkeley.edu/papers/ERL-M90-36.pdf"
TARGET="_top"
>    On Rules, Procedures, Caching and Views in Database Systems
    </A
></I
></A
>), and Version 2 was released in June 1990 with
   the new rule system.  Version 3 appeared in 1991 and added support
   for multiple storage managers, an improved query executor, and a
   rewritten rule system.  For the most part, subsequent releases
   until <SPAN
CLASS="PRODUCTNAME"
>Postgres95</SPAN
> (see below) focused on
   portability and reliability.
  </P
><P
>   <SPAN
CLASS="PRODUCTNAME"
>POSTGRES</SPAN
> has been used to implement many
   different research and production applications.  These include: a
   financial data analysis system, a jet engine performance monitoring
   package, an asteroid tracking database, a medical information
   database, and several geographic information systems.
   <SPAN
CLASS="PRODUCTNAME"
>POSTGRES</SPAN
> has also been used as an
   educational tool at several universities.  Finally, Illustra
   Information Technologies (later merged into
   <A
HREF="http://www.informix.com/"
TARGET="_top"
><SPAN
CLASS="PRODUCTNAME"
>Informix</SPAN
></A
>,
   which is now owned by <A
HREF="http://www.ibm.com/"
TARGET="_top"
>IBM</A
>) picked up the code and
   commercialized it.  In late 1992,
   <SPAN
CLASS="PRODUCTNAME"
>POSTGRES</SPAN
> became the primary data manager
   for the
   <A
HREF="http://meteora.ucsd.edu/s2k/s2k_home.html"
TARGET="_top"
>   Sequoia 2000 scientific computing project</A
>.
  </P
><P
>   The size of the external user community nearly doubled during 1993.
   It became increasingly obvious that maintenance of the prototype
   code and support was taking up large amounts of time that should
   have been devoted to database research.  In an effort to reduce
   this support burden, the Berkeley
   <SPAN
CLASS="PRODUCTNAME"
>POSTGRES</SPAN
> project officially ended with
   Version 4.2.
  </P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="HISTORY-POSTGRES95"
><SPAN
CLASS="PRODUCTNAME"
>Postgres95</SPAN
></A
></H2
><P
>   In 1994, Andrew Yu and Jolly Chen added an SQL language interpreter
   to <SPAN
CLASS="PRODUCTNAME"
>POSTGRES</SPAN
>.  Under a new name,
   <SPAN
CLASS="PRODUCTNAME"
>Postgres95</SPAN
> was subsequently released to
   the web to find its own way in the world as an open-source
   descendant of the original <SPAN
CLASS="PRODUCTNAME"
>POSTGRES</SPAN
>
   Berkeley code.
  </P
><P
>   <SPAN
CLASS="PRODUCTNAME"
>Postgres95</SPAN
> code was completely ANSI C
   and trimmed in size by 25%. Many internal changes improved
   performance and
   maintainability. <SPAN
CLASS="PRODUCTNAME"
>Postgres95</SPAN
> release
   1.0.x ran about 30-50% faster on the Wisconsin Benchmark compared
   to <SPAN
CLASS="PRODUCTNAME"
>POSTGRES</SPAN
>, Version 4.2.  Apart from
   bug fixes, the following were the major enhancements:

   <P
></P
></P><UL
><LI
><P
>      The query language PostQUEL was replaced with
      <ACRONYM
CLASS="ACRONYM"
>SQL</ACRONYM
> (implemented in the server).  Subqueries
      were not supported until <SPAN
CLASS="PRODUCTNAME"
>PostgreSQL</SPAN
>
      (see below), but they could be imitated in
      <SPAN
CLASS="PRODUCTNAME"
>Postgres95</SPAN
> with user-defined
      <ACRONYM
CLASS="ACRONYM"
>SQL</ACRONYM
> functions. Aggregate functions were
      re-implemented.  Support for the <TT
CLASS="LITERAL"
>GROUP BY</TT
>
      query clause was also added.
     </P
></LI
><LI
><P
>      A new program
      (<SPAN
CLASS="APPLICATION"
>psql</SPAN
>) was provided for interactive
      SQL queries, which used <ACRONYM
CLASS="ACRONYM"
>GNU</ACRONYM
>
      <SPAN
CLASS="APPLICATION"
>Readline</SPAN
>.  This largely superseded
      the old <SPAN
CLASS="APPLICATION"
>monitor</SPAN
> program.
     </P
></LI
><LI
><P
>      A new front-end library, <TT
CLASS="FILENAME"
>libpgtcl</TT
>,
      supported <ACRONYM
CLASS="ACRONYM"
>Tcl</ACRONYM
>-based clients.  A sample shell,
      <TT
CLASS="COMMAND"
>pgtclsh</TT
>, provided new Tcl commands to
      interface <SPAN
CLASS="APPLICATION"
>Tcl</SPAN
> programs with the
      <SPAN
CLASS="PRODUCTNAME"
>Postgres95</SPAN
> server.
     </P
></LI
><LI
><P
>      The large-object interface was overhauled. The inversion large
      objects were the only mechanism for storing large objects.  (The
      inversion file system was removed.)
     </P
></LI
><LI
><P
>      The instance-level rule system was removed.  Rules were still
      available as rewrite rules.
     </P
></LI
><LI
><P
>      A short tutorial introducing regular <ACRONYM
CLASS="ACRONYM"
>SQL</ACRONYM
>
      features as well as those of
      <SPAN
CLASS="PRODUCTNAME"
>Postgres95</SPAN
> was distributed with the
      source code
     </P
></LI
><LI
><P
>      <ACRONYM
CLASS="ACRONYM"
>GNU</ACRONYM
> make (instead of <ACRONYM
CLASS="ACRONYM"
>BSD</ACRONYM
>
      make) was used for the build.  Also,
      <SPAN
CLASS="PRODUCTNAME"
>Postgres95</SPAN
> could be compiled with an
      unpatched <SPAN
CLASS="PRODUCTNAME"
>GCC</SPAN
> (data alignment of
      doubles was fixed).
     </P
></LI
></UL
><P>
  </P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN187"
><SPAN
CLASS="PRODUCTNAME"
>PostgreSQL</SPAN
></A
></H2
><P
>   By 1996, it became clear that the name <SPAN
CLASS="QUOTE"
>"Postgres95"</SPAN
>
   would not stand the test of time. We chose a new name,
   <SPAN
CLASS="PRODUCTNAME"
>PostgreSQL</SPAN
>, to reflect the relationship
   between the original <SPAN
CLASS="PRODUCTNAME"
>POSTGRES</SPAN
> and the
   more recent versions with <ACRONYM
CLASS="ACRONYM"
>SQL</ACRONYM
> capability.  At
   the same time, we set the version numbering to start at 6.0,
   putting the numbers back into the sequence originally begun by the
   Berkeley <SPAN
CLASS="PRODUCTNAME"
>POSTGRES</SPAN
> project.
  </P
><P
>   Many people continue to refer to
   <SPAN
CLASS="PRODUCTNAME"
>PostgreSQL</SPAN
> as <SPAN
CLASS="QUOTE"
>"Postgres"</SPAN
>
   (now rarely in all capital letters) because of tradition or because
   it is easier to pronounce.  This usage is widely accepted as a
   nickname or alias.
  </P
><P
>   The emphasis during development of
   <SPAN
CLASS="PRODUCTNAME"
>Postgres95</SPAN
> was on identifying and
   understanding existing problems in the server code.  With
   <SPAN
CLASS="PRODUCTNAME"
>PostgreSQL</SPAN
>, the emphasis has shifted to
   augmenting features and capabilities, although work continues in
   all areas.
  </P
><P
>   Details about what has happened in <SPAN
CLASS="PRODUCTNAME"
>PostgreSQL</SPAN
> since
   then can be found in <A
HREF="release.html"
>Appendix E</A
>.
  </P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="intro-whatis.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="notation.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>What is <SPAN
CLASS="PRODUCTNAME"
>PostgreSQL</SPAN
>?</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="preface.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Conventions</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>